﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Web.DynamicData;
using System.Data.SqlClient;

namespace sistemaAcademicoFinanceiroEscolas.mensalidadesEdit
{
    public partial class Edit : System.Web.UI.Page
    {
        protected MetaTable table;

        protected void Page_Init(object sender, EventArgs e)
        {
            DynamicDataManager1.RegisterControl(DetailsView1);
            Session["jadefiniufoco"] = "Nao";
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            table = DetailsDataSource.GetTable();
            Title = table.DisplayName;

            if (!Page.IsPostBack)
            {
                System.Data.SqlClient.SqlConnection sqld = new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqld.Open();

                string sqlMax = "SELECT * FROM mensalidade where codigoMensalidadeValor = " + Request["codigoMensalidadeValor"].ToString();

                System.Data.SqlClient.SqlCommand cmdPegar = new System.Data.SqlClient.SqlCommand(sqlMax, sqld);
                System.Data.SqlClient.SqlDataReader drPegar = cmdPegar.ExecuteReader();
                drPegar.Read();

                Session["codigoAnoLetivo"] = drPegar["codigoAnoLetivo"].ToString();
                Session["codigoSerie"] = drPegar["codigoSerie"].ToString();
                Session["codigoTurma"] = drPegar["codigoTurma"].ToString();
                Session["valorMensalidade"] = drPegar["valorMensalidade"].ToString();
                Session["codigoMesInicial"] = drPegar["codigoMesInicial"].ToString();
                Session["codigoMesFinal"] = drPegar["codigoMesFinal"].ToString();
                Session["juroMoraMensalidade"] = drPegar["juroMoraMensalidade"].ToString();
                Session["juroDiarioMensalidade"] = drPegar["juroDiarioMensalidade"].ToString();


                cmdPegar.Dispose();
                drPegar.Close();

                sqld.Close();

                SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                //carregar anos letivos

                string sqlAnoLetivo = "select * from anoLetivo";

                SqlCommand cmdAnoLetivo = new SqlCommand(sqlAnoLetivo, sqlc);
                SqlDataReader myReaderAnoLetivo = cmdAnoLetivo.ExecuteReader();

                ListItem anoLetivoSelecione = new ListItem();
                anoLetivoSelecione.Value = "0";
                anoLetivoSelecione.Text = "Selecione um Ano Letivo";

                lstAnoLetivo.Items.Add(anoLetivoSelecione);

                while (myReaderAnoLetivo.Read())
                {

                    ListItem anoLetivo = new ListItem();

                    anoLetivo.Value = myReaderAnoLetivo["codigoAnoLetivo"].ToString();
                    anoLetivo.Text = myReaderAnoLetivo["descricaoAnoLetivo"].ToString();

                    lstAnoLetivo.Items.Add(anoLetivo);

                }

                cmdAnoLetivo.Dispose();
                myReaderAnoLetivo.Close();

                //anos letivos carregados

                string sqlSerie = "select * from serie where codigoAnoLetivo = " + Session["codigoAnoLetivo"].ToString();

                SqlCommand cmdSerie = new SqlCommand(sqlSerie, sqlc);
                SqlDataReader myReaderSerie = cmdSerie.ExecuteReader();

                ListItem serieSelecione = new ListItem();
                serieSelecione.Value = "0";
                serieSelecione.Text = "Selecione uma série";

                lstSerie.Items.Add(serieSelecione);

                while (myReaderSerie.Read())
                {

                    ListItem serie = new ListItem();

                    serie.Value = myReaderSerie["codigoSerie"].ToString();
                    serie.Text = myReaderSerie["descricaoSerie"].ToString();

                    lstSerie.Items.Add(serie);

                }

                cmdSerie.Dispose();
                myReaderSerie.Close();


                string sqlTurma = "select * from turma where codigoSerie = " + Session["codigoSerie"].ToString();

                SqlCommand cmdTurma = new SqlCommand(sqlTurma, sqlc);
                SqlDataReader myReaderTurma = cmdTurma.ExecuteReader();

                ListItem TurmaSelecione = new ListItem();
                TurmaSelecione.Value = "0";
                TurmaSelecione.Text = "Selecione uma turma";

                lstTurma.Items.Add(TurmaSelecione);

                while (myReaderTurma.Read())
                {

                    ListItem Turma = new ListItem();

                    Turma.Value = myReaderTurma["codigoTurma"].ToString();
                    Turma.Text = myReaderTurma["descricaoTurma"].ToString();

                    lstTurma.Items.Add(Turma);

                }

                cmdTurma.Dispose();
                myReaderTurma.Close();

                sqlc.Close();


                lstAnoLetivo.SelectedValue = Session["codigoAnoLetivo"].ToString();
                lstSerie.SelectedValue = Session["codigoSerie"].ToString();
                lstTurma.SelectedValue = Session["codigoTurma"].ToString();
            }
        }

        protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
        {
            if (e.CommandName == DataControlCommands.CancelCommandName)
            {
                Response.Redirect(table.ListActionPath);
            }
        }

        protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
        {
            if (e.Exception == null || e.ExceptionHandled)
            {
                System.Data.SqlClient.SqlConnection sqlc = new System.Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
                sqlc.Open();

                string sqlMax = "SELECT * FROM mensalidade where codigoMensalidadeValor = " + Request["codigoMensalidadeValor"].ToString();

                System.Data.SqlClient.SqlCommand cmdPegar = new System.Data.SqlClient.SqlCommand(sqlMax, sqlc);
                System.Data.SqlClient.SqlDataReader drPegar = cmdPegar.ExecuteReader();
                drPegar.Read();

                string codigoAnoLetivo = drPegar["codigoAnoLetivo"].ToString();
                string codigoSerie = drPegar["codigoSerie"].ToString();
                string codigoTurma = drPegar["codigoTurma"].ToString();
                string valorMensalidade = drPegar["valorMensalidade"].ToString();
                string codigoMesInicial = drPegar["codigoMesInicial"].ToString();
                string codigoMesFinal = drPegar["codigoMesFinal"].ToString();
                string juroMoraMensalidade = drPegar["juroMoraMensalidade"].ToString();
                string juroDiarioMensalidade = drPegar["juroDiarioMensalidade"].ToString();

                cmdPegar.Dispose();
                drPegar.Close();


                if (lstAnoLetivo.SelectedValue != "")
                {
                    if (lstAnoLetivo.SelectedValue != "0")
                    {
                        string q = "update mensalidade set codigoAnoLetivo =" + lstAnoLetivo.SelectedValue + ", codigoSerie = " + lstSerie.SelectedValue + " , codigoTurma = " + lstTurma.SelectedValue + " where codigoMensalidadeValor=" + Request["codigoMensalidadeValor"].ToString();

                        SqlCommand alterar = new SqlCommand(q, sqlc);
                        alterar.ExecuteNonQuery();

                        MontarPagamentoAluno mpa = new MontarPagamentoAluno();
                        mpa.modificarMensalidadePagamentoAluno(lstAnoLetivo.SelectedValue.ToString(), lstSerie.SelectedValue.ToString(), lstTurma.SelectedValue.ToString(), valorMensalidade, Convert.ToInt16(codigoMesInicial), Convert.ToInt16(codigoMesFinal));
                    }
                    else
                    {
                        string q = "update mensalidade set codigoAnoLetivo =" + Session["codigoAnoLetivo"].ToString() + ", codigoSerie = " + Session["codigoSerie"].ToString() + " , codigoTurma = " + Session["codigoTurma"].ToString() + " where codigoMensalidadeValor=" + Request["codigoMensalidadeValor"].ToString();

                        SqlCommand deletarDetalhe = new SqlCommand(q, sqlc);
                        deletarDetalhe.ExecuteNonQuery();

                        Response.Redirect("Edit.aspx");
                    }
                }
                else
                {
                    string q = "update mensalidade set codigoAnoLetivo =" + Session["codigoAnoLetivo"].ToString() + ", codigoSerie = " + Session["codigoSerie"].ToString() + " , codigoTurma = " + Session["codigoTurma"].ToString() + " where codigoMensalidadeValor=" + Request["codigoMensalidadeValor"].ToString();

                    SqlCommand deletarDetalhe = new SqlCommand(q, sqlc);
                    deletarDetalhe.ExecuteNonQuery();

                    Response.Redirect("Edit.aspx");
                }

                sqlc.Close();

                Response.Redirect(table.ListActionPath);
            }
        }

        protected void lstAnoLetivo_SelectedIndexChanged(object sender, EventArgs e)
        {

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            lstSerie.Items.Clear();
            lstTurma.Items.Clear();

            //Carregar séries

            string sqlSerie = "select * from serie where codigoAnoLetivo = " + lstAnoLetivo.SelectedValue;

            SqlCommand cmdSerie = new SqlCommand(sqlSerie, sqlc);
            SqlDataReader myReaderSerie = cmdSerie.ExecuteReader();

            ListItem serieSelecione = new ListItem();
            serieSelecione.Value = "0";
            serieSelecione.Text = "Selecione uma série";

            lstSerie.Items.Add(serieSelecione);

            while (myReaderSerie.Read())
            {

                ListItem serie = new ListItem();

                serie.Value = myReaderSerie["codigoSerie"].ToString();
                serie.Text = myReaderSerie["descricaoSerie"].ToString();

                lstSerie.Items.Add(serie);

            }

            cmdSerie.Dispose();
            myReaderSerie.Close();
            sqlc.Close();
            //Finalizar carregamento de séries

        }

        protected void lstSerie_SelectedIndexChanged(object sender, EventArgs e)
        {

            SqlConnection sqlc = new SqlConnection(ConfigurationManager.AppSettings["baseDados"]);
            sqlc.Open();

            lstTurma.Items.Clear();

            //Carregar séries

            string sqlSerie = "select * from turma where codigoSerie = " + lstSerie.SelectedValue;

            SqlCommand cmdSerie = new SqlCommand(sqlSerie, sqlc);
            SqlDataReader myReaderSerie = cmdSerie.ExecuteReader();

            ListItem serieSelecione = new ListItem();
            serieSelecione.Value = "0";
            serieSelecione.Text = "Selecione uma turma";

            lstTurma.Items.Add(serieSelecione);

            while (myReaderSerie.Read())
            {

                ListItem serie = new ListItem();

                serie.Value = myReaderSerie["codigoTurma"].ToString();
                serie.Text = myReaderSerie["descricaoTurma"].ToString();

                lstTurma.Items.Add(serie);

            }

            cmdSerie.Dispose();
            myReaderSerie.Close();
            sqlc.Close();
            //Finalizar carregamento de séries
        }
    }
}
